package com.itggm.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itggm.DTO.CourseTypePageDTO;
import com.itggm.mapper.CourseMapper;
import com.itggm.mapper.CourseTypeMapper;
import com.itggm.pojo.Course;
import com.itggm.pojo.CourseType;
import com.itggm.response.ResponseResult;
import com.itggm.service.CourseTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;

import java.util.List;

/**
 * @author: ggm
 * @data 2024年11月22日 19:38
 * 类型管理
 */
@Service
public class CourseTypeServiceImpl implements CourseTypeService {


    @Autowired
    private CourseTypeMapper courseTypeMapper;

     @Autowired
    private CourseMapper courseMapper;

    @Override
    public ResponseResult CourseTypePage(CourseTypePageDTO courseTypePageDTO) {

        PageHelper.startPage(courseTypePageDTO.getPage(),courseTypePageDTO.getLimit());
        List<CourseType> tableData =  courseTypeMapper.selectCourseTypes(courseTypePageDTO.getType(),courseTypePageDTO.getIsDelete());

        long total = new PageInfo<CourseType>(tableData).getTotal();

        return ResponseResult.success().data(tableData).count(total);
    }

    @Override
    public ResponseResult deleteCourseType(List<Integer> ids) {

        // 判定删除的课程类型是否被使用
        List<Course> courses =  courseMapper.selectCoursesByTypeId(ids);

        if (ObjectUtils.isEmpty(courses)){
            courseTypeMapper.deleteCourseType(ids);
        }else {   //  类型被占用  课程类型状态的更新
            courseTypeMapper.updateIsDelete(ids);
        }
        return ResponseResult.success();
    }

    @Override
    public ResponseResult updateCourseType(CourseType courseType) {

        courseTypeMapper.updateCourseType(courseType);
        return ResponseResult.success();
    }

    @Override
    public ResponseResult updateIsDelete(Integer id, Integer isDelete) {

        courseTypeMapper.updateDelete(id,isDelete);
        return ResponseResult.success();
    }

    @Override
    public ResponseResult addCourseType(CourseType courseType) {

        courseTypeMapper.insertCourseType(courseType);
        return ResponseResult.success();
    }

    @Override
    public ResponseResult courseTypeList() {
        List<CourseType> courseTypeList =  courseTypeMapper.selectCourseTypes(null,null);
        return ResponseResult.success().data(courseTypeList);
    }

    @Override
    public ResponseResult getcourseTypeList() {
        List<CourseType> courseTypeList = courseTypeMapper.getcourseTypeList();
        return ResponseResult.success().data(courseTypeList);
    }


}
